import java.util.*;

public class 一手顺子 {

    public boolean isNStraightHand(int[] hand, int groupSize) {
        int n = hand.length;
        // 首先是必须要能分组
        if (n % groupSize != 0) {
            return false;
        }
        // 存储 map 的值
        Map<Integer,Integer> map = new HashMap<>();
        for (int num : hand) {
            map.put(num,map.getOrDefault(num,0) + 1);
        }
        // 排序
        Arrays.sort(hand);
        // 最后进行寻找一段是否连续
        for (int num : hand) {
            // 不存在就下一个
            if (!map.containsKey(num)) {
                continue;
            }
            // 存在的话
            for (int i = 0;i < groupSize;i++) {
                int x = i + num;
                // 无法连续就返回
                if (!map.containsKey(x)) {
                    return false;
                }
                // 连续
                map.put(x,map.get(x) - 1);
                if (map.get(x) == 0) {
                    map.remove(x);
                }
            }
        }
        return true;
    }
}
